package ltd.newbee.mall.service.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import ltd.newbee.mall.api.mall.vo.SkuValueVO;
import ltd.newbee.mall.dao.SkuValueMapper;
import ltd.newbee.mall.dao.StockMapper;
import ltd.newbee.mall.entity.ChangedSkuValue;
import ltd.newbee.mall.entity.SkuValue;
import ltd.newbee.mall.entity.Stock;
import ltd.newbee.mall.service.SkuValueService;
import ltd.newbee.mall.service.StockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Service
public class SkuValueServiceImpl implements SkuValueService {
    @Autowired
    SkuValueMapper skuValueMapper;
    @Autowired
    StockMapper stockMapper;
    @Override
    public List<SkuValue> getSkuValueByProductId(Long productId){
        List<SkuValue> skus=skuValueMapper.getByProductId(productId);
        return skus;
    }
    @Override
    public SkuValueVO setskustyle(Long productId){
        SkuValueVO skuValueVO=new SkuValueVO();
        List<SkuValue> skulist=skuValueMapper.getByProductId(productId);
        if (skulist.size()==0 || skulist.equals(null)){
            return null;
        }
        BigDecimal price=new BigDecimal(0);
        skuValueVO.setPrice(price);
        skuValueVO.setQuota(10);//设置限购
        List<SkuValueVO.SkuDto> tree =new ArrayList<>();
        for(int i=0;i<skulist.size();i++){
            List<ChangedSkuValue>skuValues =this.getChanged(skulist.get(i));
            ChangedSkuValue chsku=skuValues.get(0);
            ArrayList<SkuValueVO.SkuValueDto> valueDtoArrayList = new ArrayList<>();
            for(ChangedSkuValue cgsku :skuValues){
                valueDtoArrayList.add(new SkuValueVO.SkuValueDto().setId(cgsku.getId()).setName(cgsku.getName()).setPrice(cgsku.getPrice()));
            }
            tree.add(new SkuValueVO.SkuDto().setK(chsku.getKey()).setV(valueDtoArrayList).setK_s("s"+chsku.getKey()));
        }
        skuValueVO.setTree(tree);
        JSONArray jsonArray = new JSONArray();
        List<Stock> stocklist=stockMapper.getStockByProductId(productId);
        for(int i=0;i<stocklist.size();i++){
            JSONObject jsonObject = new JSONObject();
            JSONArray jsonArray1 = JSONArray.parseArray(stocklist.get(i).getSkuList());
            for(int j=0; j<jsonArray1.size(); j++) {
                //循环一条库存的sku-name，value
                jsonObject.put("s"+jsonArray1.getJSONObject(j).get("name"),jsonArray1.getJSONObject(j).get("value"));
                jsonObject.put("price", stocklist.get(i).getPrice());
                jsonObject.put("stock_num",stocklist.get(i).getStock());
                jsonObject.put("id", stocklist.get(i).getId());

            }
            jsonArray.add(jsonObject);
        }
//        for(int s=0;s<tree.get(0).getV().size();s++){//获取第一个规格
//            JSONObject jsonObject = new JSONObject();
//            jsonObject.put(tree.get(0).getK_s(), tree.get(0).getV().get(s).getId());
//            jsonObject.put("price", tree.get(0).getV().get(s).getPrice());
//            jsonObject.put("stock_num",tree.get(0).getV().get(s).getStock_num());
//            jsonObject.put("stock_num",100);
//            jsonObject.put("id", ++a + "");
////            jsonObject.put("price", );
//            for(int k=0;k<tree.get(1).getV().size();k++){
//                jsonObject.put(tree.get(1).getK_s(),tree.get(1).getV().get(k).getId());
//                jsonArray.add(jsonObject);
//            }
//        }

        //设置总库存
        skuValueVO.setStock_num(0);
        skuValueVO.setList(jsonArray);
        return skuValueVO;
    }

    @Override
    public List<ChangedSkuValue> getChanged(SkuValue sku) {
        List<ChangedSkuValue> cg=this.getsku(sku);
        System.out.println(cg.toString());
        return cg;
    }
    public List<ChangedSkuValue> getsku(SkuValue sku){
        String[] sk=sku.getValue().replace("[","").replace("]","").replace("\"","").split(",");
        List<ChangedSkuValue> cgls=new ArrayList<>();
        String key=sku.getName();
        for(String s: sk){
            ChangedSkuValue cg=new ChangedSkuValue();
            cg.setId(s);
            cg.setName(s);
            cg.setKey(key);
            BigDecimal bg=new BigDecimal(11.5);
            cg.setPrice(bg);
            cgls.add(cg);
        }
        return cgls;
    }
}

